#ifndef __FLAPP_CLOCK_H__
#define __FLAPP_CLOCK_H__
#include <time.h>
#include "flapp_system.h"

#define ALARM_TIME				5	

typedef struct rtc_time_struct
{
    u16 u16Year;       // 1970~2038
    u8 u8Mon;       // 1~12
    u8 u8Day;  // 1~31
	
    u8 u8Week;
    u8 u8Hour;        // 0~23
    u8 u8Min;      // 0~59
    u8 u8Sec;      // 0~59
}rtc_time_t;

typedef enum
{
	MED_TYPE_NO = 0,				
	MED_NORMAL,		
	MED_AHEAD,		
}med_alaem_type_e;	

typedef struct med_time_struct
{	
    u8 u8Hour;        			
    u8 u8Min;      				
    u8 u8Sec;      				
		u8 u8Interval; 
		u8 u8MedAlarmSta;	
		u8 u8RingSta;
		bool bTodMedInfo;
		bool bTimeAdj;
		bool bPlayNetSucc;	
		u16 u16RingLen;
		u16 u16StartDay;      
    u16 u16EndDay;      	
		u16 u16StopStrDay;     
    u16 u16StopEndDay;	
		u32 u32TokenVaild;	
}med_time_t;	

typedef struct day_time_struct
{
    u16 u16Year;    // 1970~2038
    u8 u8Mon;       // 1~12
    u8 u8Day;  			// 1~31
}day_time_t;

typedef struct sub_para_struct
{
    u16 u16Year;       // 1970~2038
    u8 u8Mon;       	 // 1~12
    u8 u8Day;  				 // 1~31
		bool bTodInfo;  		 // 1~31
		bool bTimeAdj;  		 
}sub_para_t;

u32 flapp_get_current_timestp(void);
void flapp_set_clock_ertc_alarm(void);
void flapp_set_med_para(med_time_t para);
med_time_t flapp_get_med_para(void);
u16 date_to_days(u16 year, u8 month, u8 day);
void fldrv_ertc_alarm_value_set(u32 alam_index);
void flapp_clock_init(void);
void flapp_clock_power_on_init(void);
void flapp_clock_run(void);
void flapp_timestamp_to_datetime(u32 timestamp);
uint32_t covBeijing2UnixTimeStp(rtc_time_t *beijingTime);
void covUnixTimeStp2Beijing(uint32_t unixTime, rtc_time_t *tempBeijing);
#endif
